package com.hb.trade.client.flow;

import com.hb.core.pojo.flow.dto.FlowTempFormDTO;
import com.hb.core.pojo.flow.dto.FlowTempMainDTO;
import com.hb.core.pojo.flow.entity.FlowApprover;
import org.fzzn.core.model.msg.Message;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 流程定义相关接口
 *
 * @author zhaojk
 */
@FeignClient("hb-flow")
public interface FlowClient {
    /**
     * 定义流程
     *
     * @return
     */
    @PostMapping("/flowTempMain/define")
    Message definition(FlowTempMainDTO flowTempMainDto);

    /**
     * 查看流程模板详情
     *
     * @return
     */
    @PostMapping("/flowTempMain/detail")
    Message<FlowTempMainDTO> detail(FlowTempMainDTO flowTempMainDto);

    /**
     * 发起一个流程
     *
     * @param flowTempMainDto
     * @return
     */
    @PostMapping("/flowMain/launch")
    Message launch(FlowTempMainDTO flowTempMainDto);

    /**
     * 获取指定用户的待办列表
     *
     * @param approver
     * @return
     */
    @PostMapping("/flowMain/todo")
    Message todo(FlowApprover approver);

    /**
     * 获取所有表单类型
     *
     * @return
     */
    @PostMapping("/flowTempForm/flowTemps")
    Message flowTemps();

    /**
     * 获取指定表单的字段信息
     *
     * @param formId
     * @return
     */
    @PostMapping("/flowTempForm/tempFormFields")
    Message tempFormFields(@RequestParam("formId") Long formId);

    /**
     * 新增表单信息
     *
     * @param formDto
     * @return
     */
    @PostMapping("/flowTempForm/newForm")
    Message newForm(FlowTempFormDTO formDto);

}
